home *** CD-ROM | disk | FTP | other *** search
/ NetNews Offline 2 / NetNews Offline Volume 2.iso / news / comp / lang / c-part1 / 7943 < prev    next >
Encoding:
Internet Message Format  |  1996-08-05  |  3.3 KB

  1. Path: ix.netcom.com!netnews
  2. From: miker3@ix.netcom.com (Mike Rubenstein)
  3. Newsgroups: comp.lang.c
  4. Subject: Re: What is &Variable (declared as: char Variable[10])?
  5. Date: Thu, 29 Feb 1996 20:46:35 GMT
  6. Organization: Netcom
  7. Message-ID: <3135e705.79283884@nntp.ix.netcom.com>
  8. References: <4gqpa1$3h9@alcor.usc.edu> <4gsdno$1bg@umbc9.umbc.edu> <4gtab6$acb@ceylon.gte.com><313318b8.53776146@nntp.ix.netcom.com> <1177@altheim.win-uk.net>
  9. NNTP-Posting-Host: ix-dc12-23.ix.netcom.com
  10. X-NETCOM-Date: Thu Feb 29 12:46:36 PM PST 1996
  11. X-Newsreader: Forte Agent .99d/32.182
  12.  
  13. broldham@altheim.win-uk.net (Brian R. Oldham) wrote:
  14.  
  15. >  
  16. > In article <313318b8.53776146@nntp.ix.netcom.com>, Mike Rubenstein (miker3@ix.netcom.com) writes:
  17. > >Brenda <g051286> wrote:
  18. > >
  19. > >> schlein@umbc.edu (Jonas J. Schlein) wrote:
  20. > >> >Abu Wawda <wawda@alcor.usc.edu> wrote:
  21. > >> >|> I'm having trouble understanding what the address of a static array
  22. > >> >|> is.
  23. > >> >
  24. > >> >I'm having trouble understanding why it matters? You almost never use the
  25. > >> >address of an array directly unless doing something tricky with pointers
  26. > >> >or with particular dimensions of a multiple dimensional array.
  27. > >> >
  28. > >> >|> For example, if I declare a variable called myarray as:
  29. > >> >|>  char myarray[10];
  30. > >> >|> then what could &myarray possibly mean? myarray is not a pointer, so
  31. > >> >|> &myarray could not possibly be the address of the variable myarray
  32. > >> >|> (like it would be if I did char* myarray and then asked for &myarray).
  33. > >> >
  34. > >> >Yes it could and yes it is...'myarray' is not a pointer, but &myarray is
  35. > >> >a pointer to 'myarray'.
  36. > >> 
  37. > >> Um, that's not correct.  myarray is DEFINITELY a pointer!  As declared above,
  38. > >> it is a constant pointer to 10 contiguous char datatypes.  myarray is an
  39. > >> ADDRESS whereas *(myarray + 5) or myarray[5] is the 6th element in the array.
  40. > >> The difference between an array and something like "char *p=myarray", is that
  41. > >> you can say p++, but you can't say myarray++.  You shouldn't say &myarray
  42. > >> either because myarray is a constant, but I read that on some compilers
  43. > >> scanf ignores the dereferencing and does not bother to warn you.
  44. > >
  45. > >NO. NO. NO.  Where do people get this idea that arrays are pointers.
  46. > >Arrays are arrays and pointers are pointers.  In many, but not all,
  47. > >situations an array is converted to a pointer.  There are exceptions.
  48. > >For example sizeof myarray is 10 but sizeof p is almost certainly not
  49. > >10.
  50. > >
  51. > >Why shouldn't you say &myarray.  It's perfectly legal C and any
  52. > >compiler that does not accept it is broken.  &myarray is a pointer to
  53. > >an array of 10 char.
  54. > >
  55. > >
  56. > >Michael M Rubenstein
  57. > >
  58. > I think Brenda is right. No-one has said that arrays are pointers, but
  59. > the name of an array is. It is the address of the first element of an
  60. > array. My understanding is that &myarray is allowable in C++, but not
  61. > in C. Anyone confirm this?
  62.  
  63. No.  The name of the array is the name of an array , not the name of a
  64. pointer.
  65.  
  66. Again, in many cases the array is converted to a pointer in an
  67. expression, but there are exceptions.  The operand of the address-of
  68. operator, &, is one of those exceptions.  In that case the array is
  69. not converted to a pointer and the address-of operator is applied to
  70. the array, giving a pointer to an array.
  71.  
  72.  
  73. Michael M Rubenstein
  74.